package com.itheima.member;

import com.hzheima.util.ImageUtil;
import com.itheima.ExtendsClass.Fly;
import com.itheima.FinalCanstans;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Random;

public class Ball extends Fly {
    //水平方向初始速度
    private  int xspeed;
    //竖直方向初始速度
    private  int yspeeg;
    //小球的初始位置
    private  int startLoc;
    //定义一个布尔值控制小球的下降
    private  boolean startDown;
    //定义一个初始血量的变量
    private  int blood;
    //定义一个当前血量
    private  int currentBlood;
    //小球的分数
    private  int score = 0;

    public int getScore() {
        return score;
    }

    Random random = new Random();

    public int getBlood() {
        return blood;
    }

    public int getCurrentBlood() {
        return currentBlood;
    }
    public Ball(int x,int y, int xspeed ,int yspeeg, int blood){
        //随机生成小球的图片
        int num = random.nextInt(5)+1;
        img = ImageUtil.getImg("x" + num + ".png");
        //小球的宽度
        width = img.getWidth();
        //小球的高度
        hight = img.getHeight();
        //分裂小球的位置
        this.x = x;
        this.y = y;
        //分裂小球的初始为速度
        this.xspeed = xspeed;
        this.yspeeg = yspeeg;
        //设置血量
        this.blood = blood;
        this.currentBlood = this.blood;
        //分裂的球直接可以向下移动
        startDown = true;

    }

    public Ball() {
        //生成的血量在[1,15]之间
         blood = random.nextInt(5) + 1;
        currentBlood = blood;
        //定义轴的初始速度为
        yspeeg = 5;
        //随机生成小球的图片
        int num = random.nextInt(5)+1;
        img = ImageUtil.getImg("x" + num + ".png");
        //小球的宽度
        width = img.getWidth();
        //小球的高度
        hight = img.getHeight();
        int startLoc = random.nextInt(2);
        if(startLoc == 0){
            x = - width;
            xspeed = 5;
        }else if (startLoc == 1){
            x = FinalCanstans.APP_WIDTH;
            xspeed = - 5;
        }
        //初始Y方向的小球的位置
        y = 100;
        //初始Y方向小球的速度
        yspeeg = 5;
    }

    public  void move(){
        x += xspeed;
        if(startLoc == 0){
            if (x >= 450){
                startDown = true;
            }else if(startLoc == 1){
                if (x <= 450){
                    startDown = true;
                }
            }
        }
        if (startDown){
            y += yspeeg;
        }

        if (xspeed < 0 && x <= 0){
            //撞左墙
            xspeed = -xspeed;
        }
        if(xspeed > 0 && x >= FinalCanstans.APP_WIDTH -width){
            //撞右墙
            xspeed = -xspeed;
        }
//        if (yspeeg < 0 && y <= 0){
//            //撞上墙
//            yspeeg= -yspeeg;
//        }
//        if (yspeeg> 0 && y >= FinalCanstans.APP_HIGHT-40-hight){
//            //撞下墙
//            yspeeg = -yspeeg;
//        }
    }

//    //重写draw方法绘制血量
//    @Override
//    public void draw(Graphics g) {
//        //继承父类的绘制方法
//        super.draw(g);
//        //设置血量的字体样式
//        g.setFont(new Font("楷体",Font.BOLD,30));
//        //设置血量的字体颜色
//        g.setColor(Color.white);
//       //如果血量>=10  就偏移  15  如果没有就偏移 10
//         int dx = blood > 10 ? 5 : 25;
//        //绘制分数\
//        g.drawString(String.valueOf(currentBlood),x + width/2 - dx ,y + hight/2 +10);
//    }


    //创建方法判断球是否和子弹1接触
    public boolean shootby(Bullet bullet) {
        boolean r = judge(bullet);
        if (r){
            startDown = true;
        }
        if (r){
            //血量减少
            currentBlood--;
            //分数增加
            //score ++;
        }
        return  r;
    }

    //创建方法判断球是否和子弹2接触
    public boolean shootby2(Bullet3 bullet3) {
        boolean q = judge(bullet3);
        if (q){
            startDown = true;
        }
        if (q){
            //血量减少
            currentBlood = currentBlood - 3;
            //分数增加
            //score ++;
        }
        return  q;
    }

    //小球分类产生两个新的对象
    public ArrayList<Ball> split(){
        ArrayList<Ball> balls = new ArrayList<>();
        if(this.currentBlood > 0){
            int randomspeed = random.nextInt(10)-5;
            Ball b1 = new Ball(this.x, this.y, randomspeed, this.yspeeg, this.currentBlood);
            randomspeed = random.nextInt(10) - 5;
            Ball b2 = new Ball(this.x, this.y, randomspeed, this.yspeeg, this.currentBlood);
            balls.add(b1);
            balls.add(b2);
        }
        return balls;
        }

}
